﻿/// <reference path="../Externos/jquery-1.9.1.min.js" />
/// <reference path="../Externos/jquery-ui-1.10.2.custom.min.js" />
/// <reference path="Ajax.js" />
/// <reference path="Comun.js" />

//--------------------------------------------------------------------------------
// CARGA DEL ADMIN
//--------------------------------------------------------------------------------
$(document).ready(function () {

    $(".acceso").find('.ui-dialog-titlebar').hide();

    $('#button-acceso').unbind();
    $('#button-acceso').click(function () {
        if (ValidarFormulario('form-acceso'))
        {
            Ajax('AccederAdmin', JSON.stringify({ Usuario: $('#input-nombre-usuario').val(), Contraseña: $('#input-pass-usuario').val() }), function (res) {
                if (res.d.Resultado)
                {
                    $('#dialogo-acceso').dialog('close');
                }
                else
                {
                    MostrarAlerta(res.d.Mensaje, 2);
                }
            });
        }
        else
        {
            MostrarAlerta('Falta algún campo por rellenar.', 3);
        }
    });

    $('#dialogo-acceso').dialog('open');

    $('#btnCerrar').click(function (e) {
        e.preventDefault();
        $("#form-acceso input[type='text']").val('');
        $("#form-acceso input[type='password']").val('');
        $("#tabs").tabs("option", "active", 0);
        $('#dialogo-acceso').dialog('open');
    });

    $("#tabs").tabs();

    //------- Eventos mostrar diálogos -------// 
    $('#boton-nuevo-hotel').button().click(function () {
        InicializarFormHotel();
        $("#dialogo-hoteles").dialog('option', 'title', 'Nuevo hotel');
        $("#dialogo-hoteles").dialog('option', 'buttons', [{ text: "Guardar", click: GuardarNuevoHotel }]);
        $("#dialogo-hoteles").dialog('open');
    });

    $('#boton-nueva-cadena').button().click(function () {
        InicializarFormCadena();
        $("#dialogo-cadenas").dialog('option', 'title', 'Nueva cadena hotelera');
        $("#dialogo-cadenas").dialog('option', 'buttons', [{ text: "Guardar", click: GuardarNuevaCadena }]);
        $("#dialogo-cadenas").dialog('open');
    });

    $('#boton-nueva-habitaciones').button().click(function () {
        InicializarFormHabitacion();
        $("#dialogo-habitaciones").dialog('option', 'title', 'Nueva habitación');
        $("#dialogo-habitaciones").dialog('option', 'buttons', [{ text: "Guardar", click: GuardarNuevaHabitacion }]);
        $("#dialogo-habitaciones").dialog('open');
    });
    
    //------- Inicializar diálogos -------// 
    $("#dialogo-cadenas").dialog({
        height: 180,
        width: 360,
        modal: true,
        autoOpen: false,
        resizable: false,
        draggable: false
    });

    $("#dialogo-hoteles").dialog({
        height: 450,
        width: 600,
        modal: true,
        autoOpen: false,
        resizable: false,
        draggable: false
    });

    $("#dialogo-habitaciones").dialog({
        height: 380,
        width: 350,
        modal: true,
        resizable: false,
        autoOpen: false,
        draggable: false
    });

    Ajax('ObtenerDatosAdministrador', '', ObtenerDatosAdministrador_cb);
});

//--------------------------------------------------------------------------------
// POST CARGA DEL ADMIN
//--------------------------------------------------------------------------------
function ObtenerDatosAdministrador_cb(res) {
    var Resultado = res.d.Resultado;
    res = res.d;

    if (Resultado)
    {
        $('#ZonaAcceso').show();
        var sHtmlTablaCadenas = CrearTablaCadenas(res.Cadenas),
            sHtmlTablaHoteles = CrearTablaHoteles(res.Hoteles),
            sHtmlTablaHabitaciones = CrearTablaHabitaciones(res.Hoteles),
            sHtmlSelectCadenas = CrearSelect(res.Cadenas),
            sHtmlSelectHoteles = CrearSelect(res.Hoteles);

        $('#content-tabla-cadenas').html(sHtmlTablaCadenas);
        $('#content-tabla-hoteles').html(sHtmlTablaHoteles);
        $('#content-tabla-habitaciones').html(sHtmlTablaHabitaciones);

        $('#cadena-hotel').html(sHtmlSelectCadenas);
        $('#hotel-habitacion').html(sHtmlSelectHoteles);

        $('#content-tabla-habitaciones #accordion').accordion({
            heightStyle: "content"
        });

        CrearEventosCadena();
        CrearEventosHabitacion();
        CrearEventosHotel();

    }
    else {
        MostrarAlerta(res.Mensaje, 2);
    }
}

//--------------------------------------------------------------------------------
// FUNCIONES CADENAS
//--------------------------------------------------------------------------------
 
//------- Inicializar form cadena -------// 
function InicializarFormCadena() {
    $('#nombre-cadena').val('');
}

function CrearTablaCadenas(cadenas) {
    var sHtml = "";

    sHtml += "<table>";
    sHtml += "<thead>";
    sHtml += "<tr>";
    sHtml += "<th></th>";
    sHtml += "<th>Nombre cadena</th>";
    sHtml += "<th>Ruta imagen</th>";
    sHtml += "</tr>";
    sHtml += "</thead>";
    sHtml += "<tbody>"

    for (var index = 0; index < cadenas.length; index++) {
        sHtml += "<tr>";
        sHtml += "<td><button class='boton-editar-cadena' data-cadena='" + JSON.stringify(cadenas[index]) + "'>Editar\
                        </button><button class='boton-borrar-cadena' data-id-cadena='" + cadenas[index].id + "'>Borrar</button></td>";
        sHtml += "<td>" + cadenas[index].nombre + "</td>";
        sHtml += "<td>" + cadenas[index].rutaImagen + "</td>";
        sHtml += "</tr>";
    }

    sHtml += "</tbody>";
    sHtml += "</table>";

    return sHtml;
}

//------- Eventos cadena ----------------// 
function CrearEventosCadena() {
    $(".boton-editar-cadena").unbind();
    $(".boton-editar-cadena").click(function () {
        var cadena = $.parseJSON($(this).attr('data-cadena'));

        $('#nombre-cadena').val(cadena.nombre);
        $('#nombre-cadena').data('id-hotel', cadena.id);
        $("#dialogo-cadenas").dialog('option', 'title', 'Modificar cadena hotelera');
        $("#dialogo-cadenas").dialog('option', 'buttons', [{ text: "Modificar", click: ModificarCadena }]);
        $("#dialogo-cadenas").dialog('open');
    });


    $(".boton-borrar-cadena").unbind();
    $('.boton-borrar-cadena').click(function () {
        MostrarConfirmacion(parseInt($(this).attr('data-id-cadena')), '¿Está seguro que desea eliminar esta cadena hotelera?', BorrarCadena);
    });
}

//------- Guardar cadena ----------------// 
function GuardarNuevaCadena() {
    if (ValidarFormulario('formCadenas')) {
        var cadena = {
            Nombre: $('#nombre-cadena').val(),
            Ruta_Imagen: "Content/Images/Cadenas/NH Hoteles.jpg"
        };

        var data = {
            cadena: cadena
        };

        Ajax('GuardarCadenaNueva', JSON.stringify(data), MensajeCadenas_cb);
    }
    else {
        MostrarAlerta('Falta algún campo por rellenar', 3);
    }
}

//------- Modificar cadena --------------// 
function ModificarCadena() {
    if (ValidarFormulario('formCadenas')) {
        var data = {
            idCadena:  $('#nombre-cadena').data('id-hotel'),
            nombreCadena: $('#nombre-cadena').val()
        };

        Ajax('ModificarCadena', JSON.stringify(data), MensajeCadenas_cb);
    }
    else {
        MostrarAlerta('Falta algún campo por rellenar', 3);
    }
}

//------- Borrar cadena -----------------// 
function BorrarCadena(id) {
    Ajax('BorrarCadena', JSON.stringify({ idCadena: id }), MensajeCadenas_cb);
}

//------- Resultado cadena --------------// 
function MensajeCadenas_cb(res) {
    if (res.d.Resultado) {
        Ajax('ObtenerDatosAdministrador', '', ObtenerDatosAdministrador_cb);
        $("#dialogo-cadenas").dialog('close');
        MostrarAlerta(res.d.Mensaje, 1);
    }
    else {
        MostrarAlerta(res.d.Mensaje, 2);
    }
}

//-------------------------------------------------------------------------------
// FUNCIONES HOTELES
//-------------------------------------------------------------------------------

//------- Inicializar form hotel --------// 
function InicializarFormHotel() {
    $("#formHoteles input[type='text']").val('');
    $("#formHoteles select").val(-1);
    $("#formHoteles textarea").val('');
    $("#formHoteles input[type='checkbox']").attr('checked', false);
}

function CrearTablaHoteles(hoteles) {
    var sHtml = "";

    sHtml += "<table>";
    sHtml += "<thead>";
    sHtml += "<tr>";
    sHtml += "<th>Nombre hotel</th>";
    sHtml += "<th>Dirección</th>"; 
    sHtml += "<th>Población</th>";
    sHtml += "<th>Nº Habitaciones</th>";
    sHtml += "<th>Teléfono</th>";
    sHtml += "<th></th>";
    sHtml += "</tr>";
    sHtml += "</thead>";
    sHtml += "<tbody>"

    for (var index = 0; index < hoteles.length; index++) {
        sHtml += "<tr>";
        sHtml += "<td>" + hoteles[index].nombre + "</td>";
        sHtml += "<td>" + hoteles[index].direccion + "</td>";
        sHtml += "<td>" + hoteles[index].poblacion + "</td>";
        sHtml += "<td>" + hoteles[index].numeroHabitaciones + "</td>";
        sHtml += "<td>" + hoteles[index].telefono + "</td>";
        sHtml += "<td><button class='boton-editar-hotel' data-hotel='" + JSON.stringify(hoteles[index]) + "'>Editar</button>\
                        <button class='boton-borrar-hotel' data-id-hotel='" + hoteles[index].id + "'>Borrar</button></td>";
        sHtml += "</tr>";
    }

    sHtml += "</tbody>";
    sHtml += "</table>";

    return sHtml;
}

//------- Eventos hotel -----------------//
function CrearEventosHotel() {
    $(".boton-editar-hotel").unbind();
    $(".boton-editar-hotel").click(function () {
        var hotel = $.parseJSON($(this).attr('data-hotel'));

        $('#nombre-hotel').val(hotel.nombre);
        $('#nombre-hotel').data('id-hotel', hotel.id);
        $('#cadena-hotel').val(hotel.idCadena);
        $('#descripcion-hotel').val(hotel.descripcion);
        $('#direccion-hotel').val(hotel.direccion);
        $('#poblacion-hotel').val(hotel.poblacion);
        $('#provincia-hotel').val(hotel.provincia);
        $('#telefono-hotel').val(hotel.telefono);
        $('#clasificacion-hotel').val(hotel.clasificacion);
        $('#otros-servicios-hotel').val(hotel.otrosServicios);

        $('#wifi-hotel').attr('checked', hotel.wifi);
        $('#parking-hotel').attr('checked', hotel.parking);
        $('#restaurante-hotel').attr('checked', hotel.restaurante);
        $('#salon-hotel').attr('checked', hotel.salon);
        $('#gimnasio-hotel').attr('checked', hotel.gimnasio);
        $('#mascotas-hotel').attr('checked', hotel.mascotas);
        $('#piscina-hotel').attr('checked', hotel.piscina);
        $('#spa-hotel').attr('checked', hotel.spa);

        $("#dialogo-hoteles").dialog('option', 'title', 'Modificar hotel');
        $("#dialogo-hoteles").dialog('option', 'buttons', [{ text: "Modificar", click: ModificarHotel }]);
        $("#dialogo-hoteles").dialog('open');
    });


    $(".boton-borrar-hotel").unbind();
    $('.boton-borrar-hotel').click(function () {
        MostrarConfirmacion(parseInt($(this).attr('data-id-hotel')), '¿Está seguro que desea eliminar este hotel?', BorrarHotel);
    });
}

//------- Guardar hotel -----------------// 
function GuardarNuevoHotel() {
    if (ValidarFormulario('formHoteles')) {
        var hotel = {
            Nombre: $('#nombre-hotel').val(),
            CadenasId: $('#cadena-hotel').val(),
            Descripcion: $('#descripcion-hotel').val(),
            Num_Habitaciones: 100,
            Direccion: $('#direccion-hotel').val(),
            Poblacion: $('#poblacion-hotel').val(),
            Provincia: $('#provincia-hotel').val(),
            Telefono: $('#telefono-hotel').val(),
            Clasificacion: $('#clasificacion-hotel').val(),
            Num_Votos: 0,
            Puntuacion: 0,
            Wifi: $('#wifi-hotel').is(":checked"),
            Parking: $('#parking-hotel').is(":checked"),
            Restaurante: $('#restaurante-hotel').is(":checked"),
            Salones_Reuniones: $('#salon-hotel').is(":checked"),
            Gimnasio: $('#gimnasio-hotel').is(":checked"),
            Mascotas: $('#mascotas-hotel').is(":checked"),
            Piscina: $('#piscina-hotel').is(":checked"),
            SpaRelax: $('#spa-hotel').is(":checked"),
            Otros_Servicios: $('#otros-servicios-hotel').val(),
            Entrada: '12:00:00.0000000',
            Salida: '15:00:00.0000000',
            Observaciones: 'Observaciones…………..………..………..………..………..………..………..………..………..………..………..………',
            DiasParaCancelar: 5,
            Imagen_Portada: 'Content/Images/Hoteles/Meliá Castilla.jpg'
        };

        var data = {
            hotel: hotel
        };

        Ajax('GuardarHotelNuevo', JSON.stringify(data), MensajeHotel_cb);
    }
    else {
        MostrarAlerta('Falta algún campo por rellenar', 3);
    }
}

//------- Modificar hotel ---------------// 
function ModificarHotel() {
    if (ValidarFormulario('formHoteles')) {
        var data = {
            idHotel: $('#nombre-hotel').data('id-hotel'),
            nombre: $('#nombre-hotel').val(),
            idCadena: parseInt($('#cadena-hotel').val()),
            descripcion: $('#descripcion-hotel').val(),
            direccion: $('#direccion-hotel').val(),
            poblacion: $('#poblacion-hotel').val(),
            provincia: $('#provincia-hotel').val(),
            telefono: $('#telefono-hotel').val(),
            clasificacion: parseInt($('#clasificacion-hotel').val()),
            wifi: $('#wifi-hotel').is(":checked"),
            parking: $('#parking-hotel').is(":checked"),
            restaurante: $('#restaurante-hotel').is(":checked"),
            salones: $('#salon-hotel').is(":checked"),
            gimnasio: $('#gimnasio-hotel').is(":checked"),
            mascotas: $('#mascotas-hotel').is(":checked"),
            piscina: $('#piscina-hotel').is(":checked"),
            spa: $('#spa-hotel').is(":checked"),
            otrosServicios: $('#otros-servicios-hotel').val(),
        };

        Ajax('ModificarHotel', JSON.stringify(data), MensajeHotel_cb);
    }
    else {
        MostrarAlerta('Falta algún campo por rellenar', 3);
    }
}

//------- Borrar hotel ------------------// 
function BorrarHotel(id) {
    Ajax('BorrarHotel', JSON.stringify({ idHotel: id }), MensajeHotel_cb);
}

//------- Resultado hotel ---------------// 
function MensajeHotel_cb(res) {
    if (res.d.Resultado) {
        Ajax('ObtenerDatosAdministrador', '', ObtenerDatosAdministrador_cb);
        $("#dialogo-hoteles").dialog('close');
        MostrarAlerta(res.d.Mensaje, 1);
    }
    else {
        MostrarAlerta(res.d.Mensaje, 2);
    }
}

//-------------------------------------------------------------------------------
// FUNCIONES HABITACIONES
//-------------------------------------------------------------------------------

//------- Inicializar form habitacion --------// 
function InicializarFormHabitacion() {
    $('#hotel-habitacion').val(-1);
    $('#tipo-habitacion').val('');
    $('#descripcion-habitacion').val('');
    $('#precio-habitacion').val('');
}

function CrearTablaHabitaciones(hoteles) {
    var sHtml = "";
    var habitaciones;

    sHtml += "<div id='accordion'>";

    for (var index = 0; index < hoteles.length; index++) {
        sHtml += "<h3>" + hoteles[index].nombre + " - " + hoteles[index].habitaciones.length + " habitaciones</h3>";
        sHtml += "<div class='contentHabitaciones'>";
        sHtml += "<table>";
        sHtml += "<thead>";
        sHtml += "<tr>";
        sHtml += "<th>Tipo</th>";
        sHtml += "<th>Descripción</th>";
        sHtml += "<th>Precio noche</th>";
        sHtml += "<th></th>";
        sHtml += "</tr>";
        sHtml += "</thead>";
        sHtml += "<tbody>";

        habitaciones = hoteles[index].habitaciones;
        for (var index2 = 0; index2 < habitaciones.length; index2++) {
            sHtml += "<tr>";
            sHtml += "<td>" + habitaciones[index2].tipo + "</td>";
            sHtml += "<td>" + habitaciones[index2].descripcion + "</td>";
            sHtml += "<td>" + habitaciones[index2].precio + "</td>";
            sHtml += "<td><button class='boton-editar-habitacion' data-habitacion='" + JSON.stringify(habitaciones[index2]) + "'>Editar</button>\
                            <button class='boton-borrar-habitacion' data-id-habitacion='" + habitaciones[index2].id + "'>Borrar</button></td>";
            sHtml += "</tr>";
        }

        sHtml += "</tbody>";
        sHtml += "</table>";
        sHtml += "";
        sHtml += " </div>";
    }

    return sHtml;
}

//------- Eventos habitacion -----------------//
function CrearEventosHabitacion() {
    $(".boton-editar-habitacion").unbind();
    $(".boton-editar-habitacion").click(function () {
        var habitacion = $.parseJSON($(this).attr('data-habitacion'));

        $('#hotel-habitacion').val(habitacion.idHotel);
        $('#tipo-habitacion').val(habitacion.tipo);
        $('#tipo-habitacion').data('id-habitacion', habitacion.id);
        $('#descripcion-habitacion').val(habitacion.descripcion);
        $('#precio-habitacion').val(habitacion.precio);

        $("#dialogo-habitaciones").dialog('option', 'title', 'Modificar cadena hotelera');
        $("#dialogo-habitaciones").dialog('option', 'buttons', [{ text: "Modificar", click: ModificarHabitacion }]);
        $("#dialogo-habitaciones").dialog('open');
    });


    $(".boton-borrar-habitacion").unbind();
    $('.boton-borrar-habitacion').click(function () {
        MostrarConfirmacion(parseInt($(this).attr('data-id-habitacion')), '¿Está seguro que desea eliminar esta habitación?', BorrarHabitacion);
    });
}

//------- Guardar habitacion -----------------// 
function GuardarNuevaHabitacion() {
    if (ValidarFormulario('formHabitaciones')) {
        var habitacion = {
            HotelesId: $('#hotel-habitacion').val(),
            Tipo: $('#tipo-habitacion').val(),
            Descripcion: $('#descripcion-habitacion').val(),
            Precio_Noche: $('#precio-habitacion').val(),
        };

        var data = {
            habitacion: habitacion
        };

        Ajax('GuardarHabitacionNueva', JSON.stringify(data), MensajeHabitacion_cb);
    }
    else {
        MostrarAlerta('Falta algún campo por rellenar', 3);
    }
}

//------- Modificar habitacion ---------------// 
function ModificarHabitacion() {
    if (ValidarFormulario('formHabitaciones')) {
        var data = {
            idHabitacion: $('#tipo-habitacion').data('id-habitacion'),
            idHotel: parseInt($('#hotel-habitacion').val()),
            Tipo: $('#tipo-habitacion').val(),
            Descripcion: $('#descripcion-habitacion').val(),
            Precio_Noche: parseFloat($('#precio-habitacion').val()),
        };

        Ajax('ModificarHabitacion', JSON.stringify(data), MensajeHabitacion_cb);
    }
    else {
        MostrarAlerta('Falta algún campo por rellenar', 3);
    }
}

//------- Borrar habitacion ------------------// 
function BorrarHabitacion(id) {
    Ajax('BorrarHabitacion', JSON.stringify({ idHabitacion: id }), MensajeHabitacion_cb);
}

//------- Resultado habitacion ---------------// 
function MensajeHabitacion_cb(res) {
    if (res.d.Resultado) {
        Ajax('ObtenerDatosAdministrador', '', ObtenerDatosAdministrador_cb);
        $("#dialogo-habitaciones").dialog('close');
        MostrarAlerta(res.d.Mensaje, 1);
    }
    else {
        MostrarAlerta(res.d.Mensaje, 2);
    }
}

//-------------------------------------------------------------------------------
// FUNCIONES GENÉRICAS
//-------------------------------------------------------------------------------

//------- Generador select genérico ------// 
function CrearSelect(options) {
    var sHtml = "";

    sHtml += "<option value='-1'>--</option>";
    for (var index = 0; index < options.length; index++) {
        sHtml += "<option value='" + options[index].id + "'>" + options[index].nombre + "</option>";
    }

    return sHtml;
}

